/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package manejadores;

import entidades.Proyecto;
import interfaz.Entidad;
import interfaz.Manejador;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import persistencia.Conexion;

/**
 *
 * @author Snailin
 */
public class ManejadorDeProyecto implements Manejador {

    private Conexion conexion=null;
    private static ManejadorDeProyecto instancia=null;
    private ResultSet rs=null;
    private PreparedStatement stmt=null;
    private ArrayList<Proyecto>proyectos=null;

    public static ManejadorDeProyecto getInstancia() {
        if(instancia==null){
          instancia=new ManejadorDeProyecto();
         }
        return instancia;
    }

    private ManejadorDeProyecto(){
        conexion=Conexion.getInstancia();
    }

    public ArrayList<Proyecto>getProyectos(){
        proyectos=new ArrayList<Proyecto>();
        String sql="SELECT * FROM proyecto";
        stmt=(PreparedStatement) conexion.hacerEnunciado(sql);
        rs=conexion.hacerConsulta(sql);
        try {
            while (rs.next()) {
                Proyecto proyecto=new Proyecto(rs.getInt(1), rs.getString(2),  rs.getString(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9), rs.getInt(10), rs.getInt(11), rs.getInt(12), rs.getInt(13));
           proyectos.add(proyecto);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeProyecto.class.getName()).log(Level.SEVERE, null, ex);
        }

        return proyectos;
    }
    
    public int agregar(Entidad proyecto) {
       int fila=0;
        String sql="INSERT INTO proyecto (id_proyecto, nombre_proyecto, descripcion, poder_adquisitivo, escolaridad, local_propio, estado_fisico, recomendaciones, tipo_chequeo_realizado, id_ingeniero, id_locacion, id_provincia, id_informe) VALUES(0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        stmt=(PreparedStatement) conexion.hacerEnunciado(sql);
        try {
            stmt.setString(1, ((Proyecto) (proyecto)).getNombre());
            stmt.setString(2, ((Proyecto) (proyecto)).getDescripcion());
            stmt.setDouble(3, ((Proyecto) (proyecto)).getPoderAdquisitivo());
            stmt.setString(4, ((Proyecto) (proyecto)).getEscolaridad());
            stmt.setString(5, ((Proyecto) (proyecto)).getLocalPropio());
            stmt.setString(6, ((Proyecto) (proyecto)).getEstadoFisico());
            stmt.setString(7, ((Proyecto) (proyecto)).getRecomendaciones());
            stmt.setString(8, ((Proyecto) (proyecto)).getTipoChequeoRealizado());
            stmt.setInt(9, ((Proyecto) (proyecto)).getIdIngeniero());
            stmt.setInt(10, ((Proyecto) (proyecto)).getIdLocacion());
            stmt.setInt(11, ((Proyecto) (proyecto)).getIdProvincia());
            stmt.setInt(12, ((Proyecto) (proyecto)).getIdInforme());
            fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeProyecto.class.getName()).log(Level.SEVERE, null, ex);
        }
       return fila;
    }

    public int eliminar(int id) {
       int fila=0;
       String sql="DELETE FROM sistema de gestión de proyectos indotel.proyecto  WHERE id_proyecto = ? ";
       stmt=(PreparedStatement) conexion.hacerEnunciado(sql);
        try {
            stmt.setInt(1, id);
            fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeProyecto.class.getName()).log(Level.SEVERE, null, ex);
        }
       return fila;
    }

    public int modificar(Entidad proyecto, int id) {
          int fila=0;
       String sql="UPDATE sistema de gestión de proyectos indotel.proyecto SET nombre_proyecto = ? , descripcion =? , poder_adquisitivo = ? , escolaridad = ? , local_propio = ? , estado_fisico = ? , recomendaciones = ? , tipo_chequeo_realizado = ? , id_ingeniero = ? , id_locacion = ? , id_provincia = ? , id_informe = ? WHERE id_proyecto = ? ";
       stmt=(PreparedStatement) conexion.hacerEnunciado(sql);
          try {
            stmt.setString(1, ((Proyecto) (proyecto)).getNombre());
            stmt.setString(2, ((Proyecto) (proyecto)).getDescripcion());
            stmt.setDouble(3, ((Proyecto) (proyecto)).getPoderAdquisitivo());
            stmt.setString(4, ((Proyecto) (proyecto)).getEscolaridad());
            stmt.setString(5, ((Proyecto) (proyecto)).getLocalPropio());
            stmt.setString(6, ((Proyecto) (proyecto)).getEstadoFisico());
            stmt.setString(7, ((Proyecto) (proyecto)).getRecomendaciones());
            stmt.setString(8, ((Proyecto) (proyecto)).getTipoChequeoRealizado());
            stmt.setInt(9, ((Proyecto) (proyecto)).getIdIngeniero());
            stmt.setInt(10, ((Proyecto) (proyecto)).getIdLocacion());
            stmt.setInt(11, ((Proyecto) (proyecto)).getIdProvincia());
            stmt.setInt(12, ((Proyecto) (proyecto)).getIdInforme());
            stmt.setInt(13, id);
            fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeProyecto.class.getName()).log(Level.SEVERE, null, ex);
        }

       return fila;
    }

}
